package com.sg.dto.biz.bff.common;


import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffOrgDeptPositionDto
 * @使用场景
 */
@Data
public class BffOrgDeptPositionDto implements Serializable {

    /**
     * 职务ID:
     */
    @NotNull(message = "职务ID不能为空")
    @ApiModelProperty("职务ID")
    private String positionId;

    /**
     * 所属实例类型编码:
     */
    @NotNull(message = "所属实例类型编码不能为空")
    @ApiModelProperty("所属实例类型编码")
    private String orgTypeCode;

    /**
     * 所属对象实例ID:
     */
    @NotNull(message = "所属对象实例ID不能为空")
    @ApiModelProperty("所属对象实例ID")
    private String orgEntityId;

    /**
     * 组织ID:
     */
    @ApiModelProperty("组织ID")
    private String organizationId;

    /**
     * 排序:
     */
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 组织名称:
     */
    @ApiModelProperty("组织名称")
    private String organizationName;
    /**
     * 组织编号:
     */
    @ApiModelProperty("组织编号")
    private String organizationNumber;
    /**
     * 操作人就职记录ID:
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;
    /**
     * 个人账号ID:
     */
    @ApiModelProperty("个人账号ID")
    private String userId;
    /**
     * 真实姓名:
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;
    /**
     * 用户昵称:
     */
    @ApiModelProperty("用户昵称")
    private String nickName;
    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 组织职务关系ID:
     */
    @ApiModelProperty("组织职务关系ID")
    private String orgPositionRelationshipId;
    /**
     * 关联职务名称ID:
     */
    @ApiModelProperty("关联职务名称ID")
    private String positionIdNameId;
    /**
     * 冗余职务名称:
     */
    @ApiModelProperty("冗余职务名称")
    private String positionIdName;
    /**
     * 职务性质:
     */
    @ApiModelProperty(" 职务性质")
    private String positionType;
    /**
     * 职务级别ID:
     */
    @ApiModelProperty("职务级别ID")
    private String positionGradeId;
    /**
     * 职务级别名称:
     */
    @ApiModelProperty("职务级别名称")
    private String positionGradeName;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BffOrgDeptPositionDto that = (BffOrgDeptPositionDto) o;
        return positionId == that.positionId && orgTypeCode == that.orgTypeCode && orgEntityId == that.orgEntityId && organizationId == that.organizationId && orderNumber == that.orderNumber && organizationName == that.organizationName && organizationNumber == that.organizationNumber && operationInductionId == that.operationInductionId && userId == that.userId && idCardName == that.idCardName && nickName == that.nickName && operateTime == that.operateTime && orgPositionRelationshipId == that.orgPositionRelationshipId && positionIdNameId == that.positionIdNameId && positionIdName == that.positionIdName && positionType == that.positionType && positionGradeId == that.positionGradeId && positionGradeName == that.positionGradeName;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), positionId, orgTypeCode, orgEntityId, organizationId, orderNumber, organizationName, organizationNumber, operationInductionId, userId, idCardName, nickName, operateTime, orgPositionRelationshipId, positionIdNameId, positionIdName, positionType, positionGradeId, positionGradeName);
    }

}
